package 牛客网_N.袋鼠过河_N7;

import java.util.Scanner;

/**
 * 
 * @author x
 * @summary 一只袋鼠要从河这边跳到河对岸，河很宽，但是河中间打了很多桩子，每隔一米就有一个，每个桩
 * 子上都有一个弹簧，袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同，用一个数字代表它的力量，如果弹
 * 簧力量为5，就代表袋鼠下一跳最多能够跳5米，如果为0，就会陷进去无法继续跳跃。河流一共N米宽，袋鼠初
 * 始位置就在第一个弹簧上面，要跳到最后一个弹簧之后就算过河了，给定每个弹簧的力量，求袋鼠最少需要多
 * 少跳能够到达对岸。如果无法到达输出-1
 * 
 * 输入分两行，第一行是数组长度N (1 ≤ N ≤ 10000)，第二行是每一项的值，用空格分隔。
 * 5
2 0 1 1 1
 *
 *输出最少的跳数，无法到达输出-1
 *4
 */
public class Main {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		int n = Integer.parseInt(in.nextLine().trim());
		String str = in.nextLine();
		String[] dataStr = str.split(" ");
		int[] a = new int[n];
		for(int i = 0; i < n; i++){
			a[i] = Integer.parseInt(dataStr[i]);			
		}
		
		for(int i = 0; i < n; i++){
			int k = 0;
			for(int j = i+1; j < i+1+a[i]; j++){
				if(j > a.length) break;
				if(a[j] == 0){
					k++;
				}
			}
			if(k == a[i]){
				System.out.println("-1");
				return;
			}
		}		
	}
	
/*	public static int Solution(int[] a, int i){
		
	}*/
}
